<!-- This is a draft and experimental XML document type definition for SMIL 1.0. Draft: $Date: 1998/05/22 19:33:00 $ ($Revision: 1.2 $) Author: Jacco van Ossenbruggen <jrvosse@cwi.nl> This is work in progress, subject to change at any time. Further information about SMIL 1.0 is available at: http://www.w3.org/AudioVideo/--> <!--=================== SMIL Document =====================================--> <!-- The root element SMIL contains all other elements.--> <!ELEMENT smil (head? , body? )> <!ATTLIST smil id ID #IMPLIED > <!--=================== The Document Head =================================--> <!ENTITY % layout-section "layout|switch"> <!ENTITY % head-element "%layout-section;|meta"> <!ELEMENT head ( (%head-element; )* )> <!ATTLIST head id ID #IMPLIED > <!--=================== Layout Element ====================================--> <!-- Layout contains channel elements or the elements of an external layout mechanism.--> <!ELEMENT layout ANY> <!ATTLIST layout id ID #IMPLIED type CDATA 'text/smil-basic' > <!--=================== Channel Element ===================================--> <!ELEMENT channel EMPTY> <!ATTLIST channel id ID #REQUIRED left CDATA '0' top CDATA '0' z-index CDATA '0' height CDATA #IMPLIED width CDATA #IMPLIED scale (meet | slice | fill | visible | hidden | auto | scroll ) 'meet' > <!--=================== Meta Element=======================================--> <!ELEMENT meta EMPTY> <!ATTLIST meta name NMTOKEN #REQUIRED content CDATA #REQUIRED > <!--=================== The Document Body =================================--> <!ENTITY % media-object "audio|video|text|img|ref"> <!ENTITY % schedule "par|seq|(%media-object;)"> <!ENTITY % inline-link "a"> <!ENTITY % assoc-link "anchor"> <!ENTITY % link "%inline-link;"> <!ENTITY % container-content "(%schedule;)|switch|(%link;)"> <!ENTITY % body-content "%container-content;"> <!ELEMENT body (%body-content; )?> <!ATTLIST body id ID #IMPLIED > <!--=================== Synchronization Attributes ========================--> <!ENTITY % sync-attributes " begin CDATA #IMPLIED end CDATA #IMPLIED"> <!--=================== Switch Parameter Attributes =======================--> <!ENTITY % switch-param-attribute " bitrate CDATA #IMPLIED language CDATA #IMPLIED screen-size CDATA #IMPLIED screen-depth CDATA #IMPLIED"> <!--=================== Fill Attribute ====================================--> <!ENTITY % fill-attribute " fill (remove|freeze|loop) 'remove'"> <!--=================== The Parallel Element ==============================--> <!-- The default for par's sync attribute is the value of the sync attribute of the SMIL root element.--> <!ENTITY % par-content "%container-content;"> <!ELEMENT par (%par-content; )*> <!ATTLIST par id ID #IMPLIED endsync CDATA 'last' sync (hard | soft ) #IMPLIED dur CDATA #IMPLIED repeat CDATA '1' %fill-attribute; channel IDREF #IMPLIED %sync-attributes; %switch-param-attribute; > <!--=================== The Sequential Element ============================--> <!ENTITY % seq-content "%container-content;"> <!ELEMENT seq (%seq-content; )*> <!ATTLIST seq id ID #IMPLIED dur CDATA #IMPLIED repeat CDATA '1' %fill-attribute; %sync-attributes; %switch-param-attribute; > <!--=================== The Switch Element ================================--> <!-- In the head, a switch may contain only layout elements, in the body, only container elements. However, this constraint cannot be expressed in the DTD (?), so we allow both:--> <!ENTITY % switch-content "layout|(%container-content;)"> <!ELEMENT switch (%switch-content; )*> <!ATTLIST switch id ID #IMPLIED %switch-param-attribute; > <!--=================== Media Object Elements =============================--> <!-- SMIL only defines the structure. The real media data is referenced by the src attribute of the media objects. The media objects have the following link attributes for XML linking compatibility:--> <!ENTITY % mo-XML-link-atts " xml-link (simple) #FIXED 'simple' show (embed) #FIXED 'embed' actuate (auto) #FIXED 'auto' inline (true) #FIXED 'true'"> <!-- Furthermore, they have the the following attributes as defined in the SMIL draft--> <!ENTITY % mo-attributes " id ID #IMPLIED src CDATA #REQUIRED type CDATA #IMPLIED channel IDREF #IMPLIED dur CDATA #IMPLIED repeat CDATA '1' %fill-attribute; %sync-attributes; %switch-param-attribute; %mo-XML-link-atts;"> <!-- Some of the media objects can have a range attribute --> <!ENTITY % range-attribute "range CDATA #IMPLIED"> <!-- Most info is in the attributes, media objects are empty or contain associated link elements:--> <!ELEMENT ref (%assoc-link; )*> <!ATTLIST ref %mo-attributes; %range-attribute; > <!ELEMENT audio (%assoc-link; )*> <!ATTLIST audio %mo-attributes; %range-attribute; > <!ELEMENT img (%assoc-link; )*> <!ATTLIST img %mo-attributes; > <!ELEMENT video (%assoc-link; )*> <!ATTLIST video %mo-attributes; %range-attribute; > <!ELEMENT text (%assoc-link; )*> <!ATTLIST text %mo-attributes; > <!--=================== Link Elements =====================================--> <!-- These should all conform to the XML linking elements --> <!ENTITY % link-XML-link-atts " xml-link (simple) #FIXED 'simple' actuate (user) #FIXED 'user' show (replace|new|pause) 'replace' inline (true) #FIXED 'true' role CDATA #IMPLIED content-role CDATA #IMPLIED content-title CDATA #IMPLIED behavior CDATA #IMPLIED"> <!ENTITY % smil-link-attributes " id ID #IMPLIED href CDATA #REQUIRED"> <!--=================== Inline Link Element ===============================--> <!ELEMENT a (%schedule; | switch )*> <!ATTLIST a %link-XML-link-atts; %smil-link-attributes; > <!--=================== Associated Link Element ===========================--> <!ELEMENT anchor EMPTY> <!ATTLIST anchor coords CDATA #IMPLIED iid CDATA #IMPLIED z-index CDATA '0' %smil-link-attributes; %link-XML-link-atts; %sync-attributes; >
|